//
// Created by QU on 24-6-24.
//

#include <iostream>
#include <string>

// 在C++17标准之前，定义类的非常量静态成员变量是一件让人头痛的事情，因为变量的声明和定义必须分开进行，比如：
class X
{
public:
    // 非静态的就只能在实现中赋值了.
    static std::string text;
    // 常量静态成员变量是可以一边声明一边定义的：
    const static std::string const_text;

    // 为了解决上面这些问题，C++17标准中增强了inline说明符的能力，它允许我们内联定义静态变量
    inline static std::string inline_static_var;
    /**
     * 上面的代码可以成功编译和运行，而且即使将类X的定义作为头文件包含在多个CPP中也不会有任何问题。
     * 在这种情况下，编译器会在类X的定义首次出现时对内联静态成员变量进行定义和初始化。
     */
};

// 非静态的就只能在实现中赋值了.
std::string X::text{"hello"};

int main()
{
    X::text += " world";
    std::cout << X::text << std::endl;
}
